package com.atguigu.gulimall.seckill.schedule;

import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
@EnableAsync
@EnableScheduling //开启定时任务（spring自带的定时框架）
public class helloSchedule {
    //cron表达式：（秒分时日月周）

    /**
     * 定时任务注解：
     * @EnableScheduling 和 @Scheduled(cron = "* * * * * *")
     * 定时任务自动配置
     * TaskSchedulingAutoConfiguration
     *
     * 定时任务不能够阻塞
     * 1.增加spring自带的定时 框架的线程池大小
     * 2.手动将任务交给线程池执行异步任务
     * 3.使用spring的注解开启异步任务
     *  @EnableAsync 和 @Async
     *
     *  异步任务自动配置
     *  TaskExecutionAutoConfiguration
     *
     *
     * 总结：使用异步任务+定时任务不阻塞完成
     * @throws InterruptedException
     */
    @Async
//    @Scheduled(cron = "* * * * * *")
    public void hello() throws InterruptedException {
        System.out.println("hello");
        Thread.sleep(3000);
    }
}
